package cn.iocoder.yudao.module.crossborder.srm.service;

import cn.iocoder.yudao.module.crossborder.srm.api.dto.ContractDTO;
import cn.iocoder.yudao.module.crossborder.srm.api.dto.PurchaseOrderDTO;
import cn.iocoder.yudao.module.crossborder.srm.api.dto.SupplierCreateReqDTO;
import cn.iocoder.yudao.module.crossborder.srm.api.dto.SupplierDTO;

import java.util.List;

/**
 * 供应商关系管理 Service 接口
 *
 * @author LHL
 */
public interface SrmService {

    /**
     * 获得供应商
     *
     * @param id 编号
     * @return 供应商
     */
    SupplierDTO getSupplier(Long id);

    /**
     * 获得供应商列表
     *
     * @param ids 编号列表
     * @return 供应商列表
     */
    List<SupplierDTO> getSupplierList(List<Long> ids);

    /**
     * 创建供应商
     *
     * @param createReq 创建请求
     * @return 编号
     */
    Long createSupplier(SupplierCreateReqDTO createReq);

    /**
     * 获得采购订单
     *
     * @param id 编号
     * @return 采购订单
     */
    PurchaseOrderDTO getPurchaseOrder(Long id);

    /**
     * 获得合同
     *
     * @param id 编号
     * @return 合同
     */
    ContractDTO getContract(Long id);

    /**
     * 供应商评估
     *
     * @param supplierId 供应商编号
     * @param score 评估分数
     * @param comment 评估意见
     * @return 是否成功
     */
    Boolean evaluateSupplier(Long supplierId, Integer score, String comment);

    /**
     * 供应商认证
     *
     * @param supplierId 供应商编号
     * @param certificationType 认证类型
     * @return 是否成功
     */
    Boolean certifySupplier(Long supplierId, String certificationType);

    /**
     * 质量检验
     *
     * @param purchaseOrderId 采购订单编号
     * @param result 检验结果
     * @return 是否成功
     */
    Boolean qualityInspect(Long purchaseOrderId, String result);

}
